package com.ys.service.sys;

import java.util.List;
import java.util.Map;

import org.springframework.ui.Model;

import com.alibaba.fastjson.JSONObject;
import com.bo.dto.NameValueSelectDto;
import com.ys.dto.DtreeSqlDto;
import com.ys.vo.R;

import lombok.AllArgsConstructor;
import lombok.Data;

public interface YsMenuService {

	DtreeSqlDto dtree();

	R deleteTrue(Long id);
	
	R add(Map<String, Object> params);

	R edit(Map<String, Object> params);
	
	R move(Long id, Long pid);
	
	String toResort(Model model, Long pid);
	@Data
	@AllArgsConstructor
	public class ToResortDto{
		private List<RowDto> rows; // 数据行
		
		@Data
		@AllArgsConstructor
		public static class RowDto {
			private Long id; // 字段ID
			private String name; // 字段名称
			private String code; // 字段编码
		}
	}
	
	R resortMenu(String rows);
	
	R resortCol(String rows, Integer sortType);
	
	@Data
	@AllArgsConstructor
	public class ToResortColDto{
		private List<RowDto> rows; // 数据行
		
		@Data
		@AllArgsConstructor
		public static class RowDto {
			private Long id; // 字段ID
			private String name; // 字段名称
		}
	}
	
	String toSettingBase(Model model, Long id);
	@Data
	@AllArgsConstructor
	public static class ToSettingDto{
		private Long id;
		private String name; // 菜单名称
		private String nameShiroAuth; // 菜单权限名称
		private List<NameValueSelectDto> templetTypeArr; // 模板类型
		private String pathSelfDefine; // 模板自定义地址
		private String pathGridRequest; // 前台请求地址
		private String pathGridEditRequest; // 编辑提交地址
		private String pathGridExportRequest; // 导出请求地址
		private String pathCommitAdd; // 表单新增提交地址
		private String pathCommitEdit; // 表单编辑提交地址
		private String pathCommitDelete; // 表单删除提交地址
		private List<NameValueSelectDto> flowModelArr; // 流程模型数组
		private String pathFlowPass; // 审批流转地址
		private String pathFlowRefuse; // 审批退回地址
		private String pathFlowInit; // 审批驳回地址
		private String preCode; // 单号头
		private String connectCode; // 连接符
		private Integer startNo; // 起始号
		private List<NameValueSelectDto> gridArr; // 子列表数组
		private List<NameValueSelectDto> rowClickGridArr; // 行单击列表数组
		
	}

	R settingBase(Long id,
			String nameShiroAuth,
			String templetType,
			String pathSelfDefine,
			String pathGridRequest, String pathGridEditRequest, String pathGridExportRequest,
			String pathCommitAdd, String pathCommitEdit, String pathCommitDelete,
			Long flowModelId, String pathFlowPass, String pathFlowRefuse, String pathFlowInit,
			String preCode, String connectCode, Integer startNo,
			Long gridId,
			Long rowClickGridId);

	R importConfig(Long menuId);
	@Data
	@AllArgsConstructor
	public static class ImportConfigDto{
		private Long menuId; // 菜单ID
		private JSONObject nameValMap;
		private String fileName; // 模板文件名称
		
	}

}